package com.dao;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.bean.ConteudoBean;
import com.helper.FormatHelper;

public class ConteudoDao {

	public static final String TABELA = "conteudo";

	public static final String COLUNA_CON_UNI_ID = "uni_id";
	public static final String COLUNA_CON_DIS_ID = "dis_id";
	public static final String COLUNA_CON_TUR_ID = "tur_id";
	public static final String COLUNA_CON_BIM_ID = "bim_id";
	public static final String COLUNA_CON_ID = "con_id";
	public static final String COLUNA_CON_DATA = "con_data";
	public static final String COLUNA_CON_CONTEUDO = "con_conteudo";
	public static final String COLUNA_CON_AULA = "con_aula";


	public long insert(SQLiteDatabase escola, ConteudoBean conteudoBean){

		ContentValues valores = new ContentValues();
		valores.put(COLUNA_CON_UNI_ID, conteudoBean.getUnidade().getId());
		valores.put(COLUNA_CON_DIS_ID, conteudoBean.getDisciplina().getId());
		valores.put(COLUNA_CON_TUR_ID, conteudoBean.getTurma().getId());
		valores.put(COLUNA_CON_BIM_ID, conteudoBean.getBimestre().getId());
		valores.put(COLUNA_CON_ID, conteudoBean.getId());
		valores.put(COLUNA_CON_DATA, FormatHelper.formatDate( conteudoBean.getData() ));
		valores.put(COLUNA_CON_CONTEUDO, conteudoBean.getConteudo());
		valores.put(COLUNA_CON_AULA, conteudoBean.getAula());

		return escola.insert(TABELA, null, valores);

	}

	public long update(SQLiteDatabase escola, ConteudoBean conteudoBean){

		ContentValues valores = new ContentValues();
		valores.put(COLUNA_CON_UNI_ID, conteudoBean.getUnidade().getId());
		valores.put(COLUNA_CON_DIS_ID, conteudoBean.getDisciplina().getId());
		valores.put(COLUNA_CON_TUR_ID, conteudoBean.getTurma().getId());
		valores.put(COLUNA_CON_BIM_ID, conteudoBean.getBimestre().getId());
		valores.put(COLUNA_CON_ID, conteudoBean.getId());
		valores.put(COLUNA_CON_DATA, FormatHelper.formatDate( conteudoBean.getData() ));
		valores.put(COLUNA_CON_CONTEUDO, conteudoBean.getConteudo());

		return escola.update(TABELA, valores, COLUNA_CON_UNI_ID + " = " + conteudoBean.getUnidade().getId() + 
				" AND " + COLUNA_CON_ID + " = " + conteudoBean.getId(), null);

	}

	public boolean delete(SQLiteDatabase escola, ConteudoBean conteudoBean){
		return escola.delete(TABELA, COLUNA_CON_UNI_ID + " = " + conteudoBean.getUnidade().getId() + 
				" AND " + COLUNA_CON_ID + "=" + conteudoBean.getId(), null) > 0;
	}

	public ConteudoBean buscaPorCodigo(SQLiteDatabase escola, int rowId) throws ParseException {
		StringBuilder sql = new StringBuilder();
		sql.append(" SELECT * ");
		sql.append("   FROM " + TABELA );
		sql.append("  WHERE "+ COLUNA_CON_ID + "=" + rowId);

		ConteudoBean conteudoBean = new ConteudoBean();

		Cursor cursor = escola.rawQuery(sql.toString(), null);

		if(cursor.getCount() > 0){
			conteudoBean.getUnidade().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_UNI_ID)));
			conteudoBean.getDisciplina().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_DIS_ID)));
			conteudoBean.getTurma().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_TUR_ID)));
			conteudoBean.getBimestre().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_BIM_ID)));
			conteudoBean.setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_ID)));

			String data = cursor.getString(cursor.getColumnIndex(COLUNA_CON_DATA));
			if (data != null) {
				conteudoBean.setData(FormatHelper.parseDate(data));
			}

			conteudoBean.setConteudo(cursor.getString(cursor.getColumnIndex(COLUNA_CON_CONTEUDO)));

			cursor.close();
			return conteudoBean;

		} else {
			cursor.close();
			return null;
		}
	}

	public List<ConteudoBean> getAll(SQLiteDatabase escola, int unidadeId, int disciplina, int turma, int bimestre) throws ParseException{

		StringBuilder sql = new StringBuilder(); 
		sql.append(" SELECT * ");
		sql.append("   FROM " + TABELA );
		sql.append("  WHERE "+ COLUNA_CON_UNI_ID + "=" + unidadeId );
		sql.append("	AND "+ COLUNA_CON_DIS_ID + "=" + disciplina );
		sql.append("  	AND "+ COLUNA_CON_TUR_ID + "=" + turma );
		sql.append("  	AND "+ COLUNA_CON_BIM_ID + "=" + bimestre );

		List<ConteudoBean> conteudoList = new ArrayList<ConteudoBean>();

		Cursor cursor = escola.rawQuery(sql.toString(), null);

		while(cursor.moveToNext()){ 

			ConteudoBean contBean = new ConteudoBean();

			contBean.getUnidade().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_UNI_ID)));
			contBean.getDisciplina().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_DIS_ID)));
			contBean.getTurma().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_TUR_ID)));
			contBean.getBimestre().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_BIM_ID)));

			contBean.setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_ID)));

			String data = cursor.getString(cursor.getColumnIndex(COLUNA_CON_DATA));
			if (data != null) {
				contBean.setData(FormatHelper.parseDate(data, "yyyy-MM-dd"));
			}

			contBean.setConteudo(cursor.getString(cursor.getColumnIndex(COLUNA_CON_CONTEUDO)));
			contBean.setAula(cursor.getInt(cursor.getColumnIndex(COLUNA_CON_AULA)));

			conteudoList.add(contBean);

		}

		cursor.close();
		return conteudoList;

	}

}
